1. Field of the Invention
The present invention is related to virtualization technology, and more particularly, to dedicating hardware resources for supporting Virtual Machines (VMs).
2. Description of the Related Art
The industry trend of virtualization and isolation of computer system resources presents two major challenges—virtualization at software level and virtualization at hardware level. A Virtual Machine (VM) is a type of an isolated Virtual Environment where multiple VMs can run on the same physical machine simultaneously. Each VM instance has a set of its own software components and uses hardware modules of the physical machine where the VM resides.
Virtualization allows running a number of VMs on the same physical machine. Examples of conventional virtualization solutions are virtual systems by VMware™, Parallels Software International, Inc., Microsoft Virtual Server, Microsoft/Citrix Terminal Server, Virtuozzo™ by SWSoft (Parallels), Xen systems by XenSource, Solaris Zones, etc. All of these systems, however, provide only limited support for a low level (i.e., hardware) virtualization.
With Virtual Machine (VM) technology, a user can create and run multiple virtual environments on a physical server at the same time. Each virtual environment (such as VM), requires its own operating system (OS) and can run applications independently. The VM software provides a layer between the computing, storage, and networking hardware and the software that runs on it.
Typically, there are multiple VMs created on a host operating system. In such system, some resources of the host operating system can be isolated and allocated for running each of the VMs. An example of this type of system is a computing environment provided by VMware™. The VMware™ solution provides standardized isolated secured computing environments.
This product is typically used as an enterprise-level solution, where a number of VMware™ Virtual Machines are distributed throughout the computer system. However, the VMware™ solution does not provide an adequate solution for processing hardware access requests from the VMs. The requests are processed in multiple operating environments. This overloads computational resources of a VM to a point where advantages of virtualization can be practically diminished.
A conventional architecture employed in virtualization solutions includes a hardware-based computational system where VMs and a host OS are implemented. In order for the VMs to use hardware devices, a virtual device and a virtual device driver are installed. The virtual driver provides VM access to a hardware device used by the VM. The driver has to relay and process I/O requests to the VM.
Hardware devices typically used by VMs are a disk storage device, a video card, a network card, a CPU, etc. This approach overloads computational resources (i.e., creates an overhead) of a VM to an unacceptable degree. This issue is overcome by Intel™ hardware solution Vt-x. The Vt-x technology provides VM code execution using direct access to processor resources. Current technologies such as Vt-d (Vt-d2 and Vt-c) also allow a VM to employ video and network cards using a direct device access approach. However, these technologies are expensive and inefficient, since they still cause overloading of the VMs. Also, the Vt-d specification does not describe how to prevent the host OS from “discovering” a device or how to “take it away” from the host OS.
Another approach, such as Xen, is creation of specific operating system with possibility of distribution hardware resources between virtual hosts where the privileged host may be used as a host OS and other hosts may be used as guest OSes. Here, a hypervisor distributes hardware resources between hosts during startup based on options loaded during system boot up.
Therefore, it is desirable to have a method for using hardware devices with the VMs without overloading available computational resources.